/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_matmul_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>
#include <vector>

#include "test/matmul/fixture.h"
#include "test/types/kernel_data_types.h"
#include "test/types/to_gtest_types.h"

using DataTypeList = sycldnn::types::KernelDataTypes;
using GTestTypeList = sycldnn::types::ToGTestTypes<DataTypeList>::type;

template <typename DataType>
using MatmulBatch1Beta1FalseFalse = MatmulFixture<DataType, false, false>;
TYPED_TEST_SUITE(MatmulBatch1Beta1FalseFalse, GTestTypeList);
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M14xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12846.,  12952.,  13058.,  13164.,  13270.,  13376.,  13482.,  13588.,
      13694.,  13800.,  13906.,  14012.,  14118.,  14224.,  30892.,  31194.,
      31496.,  31798.,  32100.,  32402.,  32704.,  33006.,  33308.,  33610.,
      33912.,  34214.,  34516.,  34818.,  48938.,  49436.,  49934.,  50432.,
      50930.,  51428.,  51926.,  52424.,  52922.,  53420.,  53918.,  54416.,
      54914.,  55412.,  66984.,  67678.,  68372.,  69066.,  69760.,  70454.,
      71148.,  71842.,  72536.,  73230.,  73924.,  74618.,  75312.,  76006.,
      85030.,  85920.,  86810.,  87700.,  88590.,  89480.,  90370.,  91260.,
      92150.,  93040.,  93930.,  94820.,  95710.,  96600.,  103076., 104162.,
      105248., 106334., 107420., 108506., 109592., 110678., 111764., 112850.,
      113936., 115022., 116108., 117194., 121122., 122404., 123686., 124968.,
      126250., 127532., 128814., 130096., 131378., 132660., 133942., 135224.,
      136506., 137788., 139168., 140646., 142124., 143602., 145080., 146558.,
      148036., 149514., 150992., 152470., 153948., 155426., 156904., 158382.,
      157214., 158888., 160562., 162236., 163910., 165584., 167258., 168932.,
      170606., 172280., 173954., 175628., 177302., 178976., 175260., 177130.,
      179000., 180870., 182740., 184610., 186480., 188350., 190220., 192090.,
      193960., 195830., 197700., 199570., 193306., 195372., 197438., 199504.,
      201570., 203636., 205702., 207768., 209834., 211900., 213966., 216032.,
      218098., 220164., 211352., 213614., 215876., 218138., 220400., 222662.,
      224924., 227186., 229448., 231710., 233972., 236234., 238496., 240758.,
      229398., 231856., 234314., 236772., 239230., 241688., 244146., 246604.,
      249062., 251520., 253978., 256436., 258894., 261352., 247444., 250098.,
      252752., 255406., 258060., 260714., 263368., 266022., 268676., 271330.,
      273984., 276638., 279292., 281946.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M14xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13756.,  13862.,  13968.,  14074.,  14180.,  14286.,  14392.,  14498.,
      14604.,  14710.,  14816.,  14922.,  15028.,  15134.,  15240.,  33077.,
      33379.,  33681.,  33983.,  34285.,  34587.,  34889.,  35191.,  35493.,
      35795.,  36097.,  36399.,  36701.,  37003.,  37305.,  52398.,  52896.,
      53394.,  53892.,  54390.,  54888.,  55386.,  55884.,  56382.,  56880.,
      57378.,  57876.,  58374.,  58872.,  59370.,  71719.,  72413.,  73107.,
      73801.,  74495.,  75189.,  75883.,  76577.,  77271.,  77965.,  78659.,
      79353.,  80047.,  80741.,  81435.,  91040.,  91930.,  92820.,  93710.,
      94600.,  95490.,  96380.,  97270.,  98160.,  99050.,  99940.,  100830.,
      101720., 102610., 103500., 110361., 111447., 112533., 113619., 114705.,
      115791., 116877., 117963., 119049., 120135., 121221., 122307., 123393.,
      124479., 125565., 129682., 130964., 132246., 133528., 134810., 136092.,
      137374., 138656., 139938., 141220., 142502., 143784., 145066., 146348.,
      147630., 149003., 150481., 151959., 153437., 154915., 156393., 157871.,
      159349., 160827., 162305., 163783., 165261., 166739., 168217., 169695.,
      168324., 169998., 171672., 173346., 175020., 176694., 178368., 180042.,
      181716., 183390., 185064., 186738., 188412., 190086., 191760., 187645.,
      189515., 191385., 193255., 195125., 196995., 198865., 200735., 202605.,
      204475., 206345., 208215., 210085., 211955., 213825., 206966., 209032.,
      211098., 213164., 215230., 217296., 219362., 221428., 223494., 225560.,
      227626., 229692., 231758., 233824., 235890., 226287., 228549., 230811.,
      233073., 235335., 237597., 239859., 242121., 244383., 246645., 248907.,
      251169., 253431., 255693., 257955., 245608., 248066., 250524., 252982.,
      255440., 257898., 260356., 262814., 265272., 267730., 270188., 272646.,
      275104., 277562., 280020., 264929., 267583., 270237., 272891., 275545.,
      278199., 280853., 283507., 286161., 288815., 291469., 294123., 296777.,
      299431., 302085.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M14xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14666.,  14772.,  14878.,  14984.,  15090.,  15196.,  15302.,  15408.,
      15514.,  15620.,  15726.,  15832.,  15938.,  16044.,  16150.,  16256.,
      35262.,  35564.,  35866.,  36168.,  36470.,  36772.,  37074.,  37376.,
      37678.,  37980.,  38282.,  38584.,  38886.,  39188.,  39490.,  39792.,
      55858.,  56356.,  56854.,  57352.,  57850.,  58348.,  58846.,  59344.,
      59842.,  60340.,  60838.,  61336.,  61834.,  62332.,  62830.,  63328.,
      76454.,  77148.,  77842.,  78536.,  79230.,  79924.,  80618.,  81312.,
      82006.,  82700.,  83394.,  84088.,  84782.,  85476.,  86170.,  86864.,
      97050.,  97940.,  98830.,  99720.,  100610., 101500., 102390., 103280.,
      104170., 105060., 105950., 106840., 107730., 108620., 109510., 110400.,
      117646., 118732., 119818., 120904., 121990., 123076., 124162., 125248.,
      126334., 127420., 128506., 129592., 130678., 131764., 132850., 133936.,
      138242., 139524., 140806., 142088., 143370., 144652., 145934., 147216.,
      148498., 149780., 151062., 152344., 153626., 154908., 156190., 157472.,
      158838., 160316., 161794., 163272., 164750., 166228., 167706., 169184.,
      170662., 172140., 173618., 175096., 176574., 178052., 179530., 181008.,
      179434., 181108., 182782., 184456., 186130., 187804., 189478., 191152.,
      192826., 194500., 196174., 197848., 199522., 201196., 202870., 204544.,
      200030., 201900., 203770., 205640., 207510., 209380., 211250., 213120.,
      214990., 216860., 218730., 220600., 222470., 224340., 226210., 228080.,
      220626., 222692., 224758., 226824., 228890., 230956., 233022., 235088.,
      237154., 239220., 241286., 243352., 245418., 247484., 249550., 251616.,
      241222., 243484., 245746., 248008., 250270., 252532., 254794., 257056.,
      259318., 261580., 263842., 266104., 268366., 270628., 272890., 275152.,
      261818., 264276., 266734., 269192., 271650., 274108., 276566., 279024.,
      281482., 283940., 286398., 288856., 291314., 293772., 296230., 298688.,
      282414., 285068., 287722., 290376., 293030., 295684., 298338., 300992.,
      303646., 306300., 308954., 311608., 314262., 316916., 319570., 322224.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M14xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15801.,  15922.,  16043.,  16164.,  16285.,  16406.,  16527.,  16648.,
      16769.,  16890.,  17011.,  17132.,  17253.,  17374.,  38090.,  38436.,
      38782.,  39128.,  39474.,  39820.,  40166.,  40512.,  40858.,  41204.,
      41550.,  41896.,  42242.,  42588.,  60379.,  60950.,  61521.,  62092.,
      62663.,  63234.,  63805.,  64376.,  64947.,  65518.,  66089.,  66660.,
      67231.,  67802.,  82668.,  83464.,  84260.,  85056.,  85852.,  86648.,
      87444.,  88240.,  89036.,  89832.,  90628.,  91424.,  92220.,  93016.,
      104957., 105978., 106999., 108020., 109041., 110062., 111083., 112104.,
      113125., 114146., 115167., 116188., 117209., 118230., 127246., 128492.,
      129738., 130984., 132230., 133476., 134722., 135968., 137214., 138460.,
      139706., 140952., 142198., 143444., 149535., 151006., 152477., 153948.,
      155419., 156890., 158361., 159832., 161303., 162774., 164245., 165716.,
      167187., 168658., 171824., 173520., 175216., 176912., 178608., 180304.,
      182000., 183696., 185392., 187088., 188784., 190480., 192176., 193872.,
      194113., 196034., 197955., 199876., 201797., 203718., 205639., 207560.,
      209481., 211402., 213323., 215244., 217165., 219086., 216402., 218548.,
      220694., 222840., 224986., 227132., 229278., 231424., 233570., 235716.,
      237862., 240008., 242154., 244300., 238691., 241062., 243433., 245804.,
      248175., 250546., 252917., 255288., 257659., 260030., 262401., 264772.,
      267143., 269514., 260980., 263576., 266172., 268768., 271364., 273960.,
      276556., 279152., 281748., 284344., 286940., 289536., 292132., 294728.,
      283269., 286090., 288911., 291732., 294553., 297374., 300195., 303016.,
      305837., 308658., 311479., 314300., 317121., 319942., 305558., 308604.,
      311650., 314696., 317742., 320788., 323834., 326880., 329926., 332972.,
      336018., 339064., 342110., 345156.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M14xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16921.,  17042.,  17163.,  17284.,  17405.,  17526.,  17647.,  17768.,
      17889.,  18010.,  18131.,  18252.,  18373.,  18494.,  18615.,  40786.,
      41132.,  41478.,  41824.,  42170.,  42516.,  42862.,  43208.,  43554.,
      43900.,  44246.,  44592.,  44938.,  45284.,  45630.,  64651.,  65222.,
      65793.,  66364.,  66935.,  67506.,  68077.,  68648.,  69219.,  69790.,
      70361.,  70932.,  71503.,  72074.,  72645.,  88516.,  89312.,  90108.,
      90904.,  91700.,  92496.,  93292.,  94088.,  94884.,  95680.,  96476.,
      97272.,  98068.,  98864.,  99660.,  112381., 113402., 114423., 115444.,
      116465., 117486., 118507., 119528., 120549., 121570., 122591., 123612.,
      124633., 125654., 126675., 136246., 137492., 138738., 139984., 141230.,
      142476., 143722., 144968., 146214., 147460., 148706., 149952., 151198.,
      152444., 153690., 160111., 161582., 163053., 164524., 165995., 167466.,
      168937., 170408., 171879., 173350., 174821., 176292., 177763., 179234.,
      180705., 183976., 185672., 187368., 189064., 190760., 192456., 194152.,
      195848., 197544., 199240., 200936., 202632., 204328., 206024., 207720.,
      207841., 209762., 211683., 213604., 215525., 217446., 219367., 221288.,
      223209., 225130., 227051., 228972., 230893., 232814., 234735., 231706.,
      233852., 235998., 238144., 240290., 242436., 244582., 246728., 248874.,
      251020., 253166., 255312., 257458., 259604., 261750., 255571., 257942.,
      260313., 262684., 265055., 267426., 269797., 272168., 274539., 276910.,
      279281., 281652., 284023., 286394., 288765., 279436., 282032., 284628.,
      287224., 289820., 292416., 295012., 297608., 300204., 302800., 305396.,
      307992., 310588., 313184., 315780., 303301., 306122., 308943., 311764.,
      314585., 317406., 320227., 323048., 325869., 328690., 331511., 334332.,
      337153., 339974., 342795., 327166., 330212., 333258., 336304., 339350.,
      342396., 345442., 348488., 351534., 354580., 357626., 360672., 363718.,
      366764., 369810.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M14xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18041.,  18162.,  18283.,  18404.,  18525.,  18646.,  18767.,  18888.,
      19009.,  19130.,  19251.,  19372.,  19493.,  19614.,  19735.,  19856.,
      43482.,  43828.,  44174.,  44520.,  44866.,  45212.,  45558.,  45904.,
      46250.,  46596.,  46942.,  47288.,  47634.,  47980.,  48326.,  48672.,
      68923.,  69494.,  70065.,  70636.,  71207.,  71778.,  72349.,  72920.,
      73491.,  74062.,  74633.,  75204.,  75775.,  76346.,  76917.,  77488.,
      94364.,  95160.,  95956.,  96752.,  97548.,  98344.,  99140.,  99936.,
      100732., 101528., 102324., 103120., 103916., 104712., 105508., 106304.,
      119805., 120826., 121847., 122868., 123889., 124910., 125931., 126952.,
      127973., 128994., 130015., 131036., 132057., 133078., 134099., 135120.,
      145246., 146492., 147738., 148984., 150230., 151476., 152722., 153968.,
      155214., 156460., 157706., 158952., 160198., 161444., 162690., 163936.,
      170687., 172158., 173629., 175100., 176571., 178042., 179513., 180984.,
      182455., 183926., 185397., 186868., 188339., 189810., 191281., 192752.,
      196128., 197824., 199520., 201216., 202912., 204608., 206304., 208000.,
      209696., 211392., 213088., 214784., 216480., 218176., 219872., 221568.,
      221569., 223490., 225411., 227332., 229253., 231174., 233095., 235016.,
      236937., 238858., 240779., 242700., 244621., 246542., 248463., 250384.,
      247010., 249156., 251302., 253448., 255594., 257740., 259886., 262032.,
      264178., 266324., 268470., 270616., 272762., 274908., 277054., 279200.,
      272451., 274822., 277193., 279564., 281935., 284306., 286677., 289048.,
      291419., 293790., 296161., 298532., 300903., 303274., 305645., 308016.,
      297892., 300488., 303084., 305680., 308276., 310872., 313468., 316064.,
      318660., 321256., 323852., 326448., 329044., 331640., 334236., 336832.,
      323333., 326154., 328975., 331796., 334617., 337438., 340259., 343080.,
      345901., 348722., 351543., 354364., 357185., 360006., 362827., 365648.,
      348774., 351820., 354866., 357912., 360958., 364004., 367050., 370096.,
      373142., 376188., 379234., 382280., 385326., 388372., 391418., 394464.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M14xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19177.,  19314.,  19451.,  19588.,  19725.,  19862.,  19999.,  20136.,
      20273.,  20410.,  20547.,  20684.,  20821.,  20958.,  46327.,  46720.,
      47113.,  47506.,  47899.,  48292.,  48685.,  49078.,  49471.,  49864.,
      50257.,  50650.,  51043.,  51436.,  73477.,  74126.,  74775.,  75424.,
      76073.,  76722.,  77371.,  78020.,  78669.,  79318.,  79967.,  80616.,
      81265.,  81914.,  100627., 101532., 102437., 103342., 104247., 105152.,
      106057., 106962., 107867., 108772., 109677., 110582., 111487., 112392.,
      127777., 128938., 130099., 131260., 132421., 133582., 134743., 135904.,
      137065., 138226., 139387., 140548., 141709., 142870., 154927., 156344.,
      157761., 159178., 160595., 162012., 163429., 164846., 166263., 167680.,
      169097., 170514., 171931., 173348., 182077., 183750., 185423., 187096.,
      188769., 190442., 192115., 193788., 195461., 197134., 198807., 200480.,
      202153., 203826., 209227., 211156., 213085., 215014., 216943., 218872.,
      220801., 222730., 224659., 226588., 228517., 230446., 232375., 234304.,
      236377., 238562., 240747., 242932., 245117., 247302., 249487., 251672.,
      253857., 256042., 258227., 260412., 262597., 264782., 263527., 265968.,
      268409., 270850., 273291., 275732., 278173., 280614., 283055., 285496.,
      287937., 290378., 292819., 295260., 290677., 293374., 296071., 298768.,
      301465., 304162., 306859., 309556., 312253., 314950., 317647., 320344.,
      323041., 325738., 317827., 320780., 323733., 326686., 329639., 332592.,
      335545., 338498., 341451., 344404., 347357., 350310., 353263., 356216.,
      344977., 348186., 351395., 354604., 357813., 361022., 364231., 367440.,
      370649., 373858., 377067., 380276., 383485., 386694., 372127., 375592.,
      379057., 382522., 385987., 389452., 392917., 396382., 399847., 403312.,
      406777., 410242., 413707., 417172.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M14xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20537.,  20674.,  20811.,  20948.,  21085.,  21222.,  21359.,  21496.,
      21633.,  21770.,  21907.,  22044.,  22181.,  22318.,  22455.,  49608.,
      50001.,  50394.,  50787.,  51180.,  51573.,  51966.,  52359.,  52752.,
      53145.,  53538.,  53931.,  54324.,  54717.,  55110.,  78679.,  79328.,
      79977.,  80626.,  81275.,  81924.,  82573.,  83222.,  83871.,  84520.,
      85169.,  85818.,  86467.,  87116.,  87765.,  107750., 108655., 109560.,
      110465., 111370., 112275., 113180., 114085., 114990., 115895., 116800.,
      117705., 118610., 119515., 120420., 136821., 137982., 139143., 140304.,
      141465., 142626., 143787., 144948., 146109., 147270., 148431., 149592.,
      150753., 151914., 153075., 165892., 167309., 168726., 170143., 171560.,
      172977., 174394., 175811., 177228., 178645., 180062., 181479., 182896.,
      184313., 185730., 194963., 196636., 198309., 199982., 201655., 203328.,
      205001., 206674., 208347., 210020., 211693., 213366., 215039., 216712.,
      218385., 224034., 225963., 227892., 229821., 231750., 233679., 235608.,
      237537., 239466., 241395., 243324., 245253., 247182., 249111., 251040.,
      253105., 255290., 257475., 259660., 261845., 264030., 266215., 268400.,
      270585., 272770., 274955., 277140., 279325., 281510., 283695., 282176.,
      284617., 287058., 289499., 291940., 294381., 296822., 299263., 301704.,
      304145., 306586., 309027., 311468., 313909., 316350., 311247., 313944.,
      316641., 319338., 322035., 324732., 327429., 330126., 332823., 335520.,
      338217., 340914., 343611., 346308., 349005., 340318., 343271., 346224.,
      349177., 352130., 355083., 358036., 360989., 363942., 366895., 369848.,
      372801., 375754., 378707., 381660., 369389., 372598., 375807., 379016.,
      382225., 385434., 388643., 391852., 395061., 398270., 401479., 404688.,
      407897., 411106., 414315., 398460., 401925., 405390., 408855., 412320.,
      415785., 419250., 422715., 426180., 429645., 433110., 436575., 440040.,
      443505., 446970.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M14xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21897.,  22034.,  22171.,  22308.,  22445.,  22582.,  22719.,  22856.,
      22993.,  23130.,  23267.,  23404.,  23541.,  23678.,  23815.,  23952.,
      52889.,  53282.,  53675.,  54068.,  54461.,  54854.,  55247.,  55640.,
      56033.,  56426.,  56819.,  57212.,  57605.,  57998.,  58391.,  58784.,
      83881.,  84530.,  85179.,  85828.,  86477.,  87126.,  87775.,  88424.,
      89073.,  89722.,  90371.,  91020.,  91669.,  92318.,  92967.,  93616.,
      114873., 115778., 116683., 117588., 118493., 119398., 120303., 121208.,
      122113., 123018., 123923., 124828., 125733., 126638., 127543., 128448.,
      145865., 147026., 148187., 149348., 150509., 151670., 152831., 153992.,
      155153., 156314., 157475., 158636., 159797., 160958., 162119., 163280.,
      176857., 178274., 179691., 181108., 182525., 183942., 185359., 186776.,
      188193., 189610., 191027., 192444., 193861., 195278., 196695., 198112.,
      207849., 209522., 211195., 212868., 214541., 216214., 217887., 219560.,
      221233., 222906., 224579., 226252., 227925., 229598., 231271., 232944.,
      238841., 240770., 242699., 244628., 246557., 248486., 250415., 252344.,
      254273., 256202., 258131., 260060., 261989., 263918., 265847., 267776.,
      269833., 272018., 274203., 276388., 278573., 280758., 282943., 285128.,
      287313., 289498., 291683., 293868., 296053., 298238., 300423., 302608.,
      300825., 303266., 305707., 308148., 310589., 313030., 315471., 317912.,
      320353., 322794., 325235., 327676., 330117., 332558., 334999., 337440.,
      331817., 334514., 337211., 339908., 342605., 345302., 347999., 350696.,
      353393., 356090., 358787., 361484., 364181., 366878., 369575., 372272.,
      362809., 365762., 368715., 371668., 374621., 377574., 380527., 383480.,
      386433., 389386., 392339., 395292., 398245., 401198., 404151., 407104.,
      393801., 397010., 400219., 403428., 406637., 409846., 413055., 416264.,
      419473., 422682., 425891., 429100., 432309., 435518., 438727., 441936.,
      424793., 428258., 431723., 435188., 438653., 442118., 445583., 449048.,
      452513., 455978., 459443., 462908., 466373., 469838., 473303., 476768.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M15xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12846.,  12952.,  13058.,  13164.,  13270.,  13376.,  13482.,  13588.,
      13694.,  13800.,  13906.,  14012.,  14118.,  14224.,  30892.,  31194.,
      31496.,  31798.,  32100.,  32402.,  32704.,  33006.,  33308.,  33610.,
      33912.,  34214.,  34516.,  34818.,  48938.,  49436.,  49934.,  50432.,
      50930.,  51428.,  51926.,  52424.,  52922.,  53420.,  53918.,  54416.,
      54914.,  55412.,  66984.,  67678.,  68372.,  69066.,  69760.,  70454.,
      71148.,  71842.,  72536.,  73230.,  73924.,  74618.,  75312.,  76006.,
      85030.,  85920.,  86810.,  87700.,  88590.,  89480.,  90370.,  91260.,
      92150.,  93040.,  93930.,  94820.,  95710.,  96600.,  103076., 104162.,
      105248., 106334., 107420., 108506., 109592., 110678., 111764., 112850.,
      113936., 115022., 116108., 117194., 121122., 122404., 123686., 124968.,
      126250., 127532., 128814., 130096., 131378., 132660., 133942., 135224.,
      136506., 137788., 139168., 140646., 142124., 143602., 145080., 146558.,
      148036., 149514., 150992., 152470., 153948., 155426., 156904., 158382.,
      157214., 158888., 160562., 162236., 163910., 165584., 167258., 168932.,
      170606., 172280., 173954., 175628., 177302., 178976., 175260., 177130.,
      179000., 180870., 182740., 184610., 186480., 188350., 190220., 192090.,
      193960., 195830., 197700., 199570., 193306., 195372., 197438., 199504.,
      201570., 203636., 205702., 207768., 209834., 211900., 213966., 216032.,
      218098., 220164., 211352., 213614., 215876., 218138., 220400., 222662.,
      224924., 227186., 229448., 231710., 233972., 236234., 238496., 240758.,
      229398., 231856., 234314., 236772., 239230., 241688., 244146., 246604.,
      249062., 251520., 253978., 256436., 258894., 261352., 247444., 250098.,
      252752., 255406., 258060., 260714., 263368., 266022., 268676., 271330.,
      273984., 276638., 279292., 281946., 265490., 268340., 271190., 274040.,
      276890., 279740., 282590., 285440., 288290., 291140., 293990., 296840.,
      299690., 302540.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M15xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13756.,  13862.,  13968.,  14074.,  14180.,  14286.,  14392.,  14498.,
      14604.,  14710.,  14816.,  14922.,  15028.,  15134.,  15240.,  33077.,
      33379.,  33681.,  33983.,  34285.,  34587.,  34889.,  35191.,  35493.,
      35795.,  36097.,  36399.,  36701.,  37003.,  37305.,  52398.,  52896.,
      53394.,  53892.,  54390.,  54888.,  55386.,  55884.,  56382.,  56880.,
      57378.,  57876.,  58374.,  58872.,  59370.,  71719.,  72413.,  73107.,
      73801.,  74495.,  75189.,  75883.,  76577.,  77271.,  77965.,  78659.,
      79353.,  80047.,  80741.,  81435.,  91040.,  91930.,  92820.,  93710.,
      94600.,  95490.,  96380.,  97270.,  98160.,  99050.,  99940.,  100830.,
      101720., 102610., 103500., 110361., 111447., 112533., 113619., 114705.,
      115791., 116877., 117963., 119049., 120135., 121221., 122307., 123393.,
      124479., 125565., 129682., 130964., 132246., 133528., 134810., 136092.,
      137374., 138656., 139938., 141220., 142502., 143784., 145066., 146348.,
      147630., 149003., 150481., 151959., 153437., 154915., 156393., 157871.,
      159349., 160827., 162305., 163783., 165261., 166739., 168217., 169695.,
      168324., 169998., 171672., 173346., 175020., 176694., 178368., 180042.,
      181716., 183390., 185064., 186738., 188412., 190086., 191760., 187645.,
      189515., 191385., 193255., 195125., 196995., 198865., 200735., 202605.,
      204475., 206345., 208215., 210085., 211955., 213825., 206966., 209032.,
      211098., 213164., 215230., 217296., 219362., 221428., 223494., 225560.,
      227626., 229692., 231758., 233824., 235890., 226287., 228549., 230811.,
      233073., 235335., 237597., 239859., 242121., 244383., 246645., 248907.,
      251169., 253431., 255693., 257955., 245608., 248066., 250524., 252982.,
      255440., 257898., 260356., 262814., 265272., 267730., 270188., 272646.,
      275104., 277562., 280020., 264929., 267583., 270237., 272891., 275545.,
      278199., 280853., 283507., 286161., 288815., 291469., 294123., 296777.,
      299431., 302085., 284250., 287100., 289950., 292800., 295650., 298500.,
      301350., 304200., 307050., 309900., 312750., 315600., 318450., 321300.,
      324150.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M15xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14666.,  14772.,  14878.,  14984.,  15090.,  15196.,  15302.,  15408.,
      15514.,  15620.,  15726.,  15832.,  15938.,  16044.,  16150.,  16256.,
      35262.,  35564.,  35866.,  36168.,  36470.,  36772.,  37074.,  37376.,
      37678.,  37980.,  38282.,  38584.,  38886.,  39188.,  39490.,  39792.,
      55858.,  56356.,  56854.,  57352.,  57850.,  58348.,  58846.,  59344.,
      59842.,  60340.,  60838.,  61336.,  61834.,  62332.,  62830.,  63328.,
      76454.,  77148.,  77842.,  78536.,  79230.,  79924.,  80618.,  81312.,
      82006.,  82700.,  83394.,  84088.,  84782.,  85476.,  86170.,  86864.,
      97050.,  97940.,  98830.,  99720.,  100610., 101500., 102390., 103280.,
      104170., 105060., 105950., 106840., 107730., 108620., 109510., 110400.,
      117646., 118732., 119818., 120904., 121990., 123076., 124162., 125248.,
      126334., 127420., 128506., 129592., 130678., 131764., 132850., 133936.,
      138242., 139524., 140806., 142088., 143370., 144652., 145934., 147216.,
      148498., 149780., 151062., 152344., 153626., 154908., 156190., 157472.,
      158838., 160316., 161794., 163272., 164750., 166228., 167706., 169184.,
      170662., 172140., 173618., 175096., 176574., 178052., 179530., 181008.,
      179434., 181108., 182782., 184456., 186130., 187804., 189478., 191152.,
      192826., 194500., 196174., 197848., 199522., 201196., 202870., 204544.,
      200030., 201900., 203770., 205640., 207510., 209380., 211250., 213120.,
      214990., 216860., 218730., 220600., 222470., 224340., 226210., 228080.,
      220626., 222692., 224758., 226824., 228890., 230956., 233022., 235088.,
      237154., 239220., 241286., 243352., 245418., 247484., 249550., 251616.,
      241222., 243484., 245746., 248008., 250270., 252532., 254794., 257056.,
      259318., 261580., 263842., 266104., 268366., 270628., 272890., 275152.,
      261818., 264276., 266734., 269192., 271650., 274108., 276566., 279024.,
      281482., 283940., 286398., 288856., 291314., 293772., 296230., 298688.,
      282414., 285068., 287722., 290376., 293030., 295684., 298338., 300992.,
      303646., 306300., 308954., 311608., 314262., 316916., 319570., 322224.,
      303010., 305860., 308710., 311560., 314410., 317260., 320110., 322960.,
      325810., 328660., 331510., 334360., 337210., 340060., 342910., 345760.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M15xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15801.,  15922.,  16043.,  16164.,  16285.,  16406.,  16527.,  16648.,
      16769.,  16890.,  17011.,  17132.,  17253.,  17374.,  38090.,  38436.,
      38782.,  39128.,  39474.,  39820.,  40166.,  40512.,  40858.,  41204.,
      41550.,  41896.,  42242.,  42588.,  60379.,  60950.,  61521.,  62092.,
      62663.,  63234.,  63805.,  64376.,  64947.,  65518.,  66089.,  66660.,
      67231.,  67802.,  82668.,  83464.,  84260.,  85056.,  85852.,  86648.,
      87444.,  88240.,  89036.,  89832.,  90628.,  91424.,  92220.,  93016.,
      104957., 105978., 106999., 108020., 109041., 110062., 111083., 112104.,
      113125., 114146., 115167., 116188., 117209., 118230., 127246., 128492.,
      129738., 130984., 132230., 133476., 134722., 135968., 137214., 138460.,
      139706., 140952., 142198., 143444., 149535., 151006., 152477., 153948.,
      155419., 156890., 158361., 159832., 161303., 162774., 164245., 165716.,
      167187., 168658., 171824., 173520., 175216., 176912., 178608., 180304.,
      182000., 183696., 185392., 187088., 188784., 190480., 192176., 193872.,
      194113., 196034., 197955., 199876., 201797., 203718., 205639., 207560.,
      209481., 211402., 213323., 215244., 217165., 219086., 216402., 218548.,
      220694., 222840., 224986., 227132., 229278., 231424., 233570., 235716.,
      237862., 240008., 242154., 244300., 238691., 241062., 243433., 245804.,
      248175., 250546., 252917., 255288., 257659., 260030., 262401., 264772.,
      267143., 269514., 260980., 263576., 266172., 268768., 271364., 273960.,
      276556., 279152., 281748., 284344., 286940., 289536., 292132., 294728.,
      283269., 286090., 288911., 291732., 294553., 297374., 300195., 303016.,
      305837., 308658., 311479., 314300., 317121., 319942., 305558., 308604.,
      311650., 314696., 317742., 320788., 323834., 326880., 329926., 332972.,
      336018., 339064., 342110., 345156., 327847., 331118., 334389., 337660.,
      340931., 344202., 347473., 350744., 354015., 357286., 360557., 363828.,
      367099., 370370.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M15xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16921.,  17042.,  17163.,  17284.,  17405.,  17526.,  17647.,  17768.,
      17889.,  18010.,  18131.,  18252.,  18373.,  18494.,  18615.,  40786.,
      41132.,  41478.,  41824.,  42170.,  42516.,  42862.,  43208.,  43554.,
      43900.,  44246.,  44592.,  44938.,  45284.,  45630.,  64651.,  65222.,
      65793.,  66364.,  66935.,  67506.,  68077.,  68648.,  69219.,  69790.,
      70361.,  70932.,  71503.,  72074.,  72645.,  88516.,  89312.,  90108.,
      90904.,  91700.,  92496.,  93292.,  94088.,  94884.,  95680.,  96476.,
      97272.,  98068.,  98864.,  99660.,  112381., 113402., 114423., 115444.,
      116465., 117486., 118507., 119528., 120549., 121570., 122591., 123612.,
      124633., 125654., 126675., 136246., 137492., 138738., 139984., 141230.,
      142476., 143722., 144968., 146214., 147460., 148706., 149952., 151198.,
      152444., 153690., 160111., 161582., 163053., 164524., 165995., 167466.,
      168937., 170408., 171879., 173350., 174821., 176292., 177763., 179234.,
      180705., 183976., 185672., 187368., 189064., 190760., 192456., 194152.,
      195848., 197544., 199240., 200936., 202632., 204328., 206024., 207720.,
      207841., 209762., 211683., 213604., 215525., 217446., 219367., 221288.,
      223209., 225130., 227051., 228972., 230893., 232814., 234735., 231706.,
      233852., 235998., 238144., 240290., 242436., 244582., 246728., 248874.,
      251020., 253166., 255312., 257458., 259604., 261750., 255571., 257942.,
      260313., 262684., 265055., 267426., 269797., 272168., 274539., 276910.,
      279281., 281652., 284023., 286394., 288765., 279436., 282032., 284628.,
      287224., 289820., 292416., 295012., 297608., 300204., 302800., 305396.,
      307992., 310588., 313184., 315780., 303301., 306122., 308943., 311764.,
      314585., 317406., 320227., 323048., 325869., 328690., 331511., 334332.,
      337153., 339974., 342795., 327166., 330212., 333258., 336304., 339350.,
      342396., 345442., 348488., 351534., 354580., 357626., 360672., 363718.,
      366764., 369810., 351031., 354302., 357573., 360844., 364115., 367386.,
      370657., 373928., 377199., 380470., 383741., 387012., 390283., 393554.,
      396825.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M15xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18041.,  18162.,  18283.,  18404.,  18525.,  18646.,  18767.,  18888.,
      19009.,  19130.,  19251.,  19372.,  19493.,  19614.,  19735.,  19856.,
      43482.,  43828.,  44174.,  44520.,  44866.,  45212.,  45558.,  45904.,
      46250.,  46596.,  46942.,  47288.,  47634.,  47980.,  48326.,  48672.,
      68923.,  69494.,  70065.,  70636.,  71207.,  71778.,  72349.,  72920.,
      73491.,  74062.,  74633.,  75204.,  75775.,  76346.,  76917.,  77488.,
      94364.,  95160.,  95956.,  96752.,  97548.,  98344.,  99140.,  99936.,
      100732., 101528., 102324., 103120., 103916., 104712., 105508., 106304.,
      119805., 120826., 121847., 122868., 123889., 124910., 125931., 126952.,
      127973., 128994., 130015., 131036., 132057., 133078., 134099., 135120.,
      145246., 146492., 147738., 148984., 150230., 151476., 152722., 153968.,
      155214., 156460., 157706., 158952., 160198., 161444., 162690., 163936.,
      170687., 172158., 173629., 175100., 176571., 178042., 179513., 180984.,
      182455., 183926., 185397., 186868., 188339., 189810., 191281., 192752.,
      196128., 197824., 199520., 201216., 202912., 204608., 206304., 208000.,
      209696., 211392., 213088., 214784., 216480., 218176., 219872., 221568.,
      221569., 223490., 225411., 227332., 229253., 231174., 233095., 235016.,
      236937., 238858., 240779., 242700., 244621., 246542., 248463., 250384.,
      247010., 249156., 251302., 253448., 255594., 257740., 259886., 262032.,
      264178., 266324., 268470., 270616., 272762., 274908., 277054., 279200.,
      272451., 274822., 277193., 279564., 281935., 284306., 286677., 289048.,
      291419., 293790., 296161., 298532., 300903., 303274., 305645., 308016.,
      297892., 300488., 303084., 305680., 308276., 310872., 313468., 316064.,
      318660., 321256., 323852., 326448., 329044., 331640., 334236., 336832.,
      323333., 326154., 328975., 331796., 334617., 337438., 340259., 343080.,
      345901., 348722., 351543., 354364., 357185., 360006., 362827., 365648.,
      348774., 351820., 354866., 357912., 360958., 364004., 367050., 370096.,
      373142., 376188., 379234., 382280., 385326., 388372., 391418., 394464.,
      374215., 377486., 380757., 384028., 387299., 390570., 393841., 397112.,
      400383., 403654., 406925., 410196., 413467., 416738., 420009., 423280.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M15xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19177.,  19314.,  19451.,  19588.,  19725.,  19862.,  19999.,  20136.,
      20273.,  20410.,  20547.,  20684.,  20821.,  20958.,  46327.,  46720.,
      47113.,  47506.,  47899.,  48292.,  48685.,  49078.,  49471.,  49864.,
      50257.,  50650.,  51043.,  51436.,  73477.,  74126.,  74775.,  75424.,
      76073.,  76722.,  77371.,  78020.,  78669.,  79318.,  79967.,  80616.,
      81265.,  81914.,  100627., 101532., 102437., 103342., 104247., 105152.,
      106057., 106962., 107867., 108772., 109677., 110582., 111487., 112392.,
      127777., 128938., 130099., 131260., 132421., 133582., 134743., 135904.,
      137065., 138226., 139387., 140548., 141709., 142870., 154927., 156344.,
      157761., 159178., 160595., 162012., 163429., 164846., 166263., 167680.,
      169097., 170514., 171931., 173348., 182077., 183750., 185423., 187096.,
      188769., 190442., 192115., 193788., 195461., 197134., 198807., 200480.,
      202153., 203826., 209227., 211156., 213085., 215014., 216943., 218872.,
      220801., 222730., 224659., 226588., 228517., 230446., 232375., 234304.,
      236377., 238562., 240747., 242932., 245117., 247302., 249487., 251672.,
      253857., 256042., 258227., 260412., 262597., 264782., 263527., 265968.,
      268409., 270850., 273291., 275732., 278173., 280614., 283055., 285496.,
      287937., 290378., 292819., 295260., 290677., 293374., 296071., 298768.,
      301465., 304162., 306859., 309556., 312253., 314950., 317647., 320344.,
      323041., 325738., 317827., 320780., 323733., 326686., 329639., 332592.,
      335545., 338498., 341451., 344404., 347357., 350310., 353263., 356216.,
      344977., 348186., 351395., 354604., 357813., 361022., 364231., 367440.,
      370649., 373858., 377067., 380276., 383485., 386694., 372127., 375592.,
      379057., 382522., 385987., 389452., 392917., 396382., 399847., 403312.,
      406777., 410242., 413707., 417172., 399277., 402998., 406719., 410440.,
      414161., 417882., 421603., 425324., 429045., 432766., 436487., 440208.,
      443929., 447650.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M15xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20537.,  20674.,  20811.,  20948.,  21085.,  21222.,  21359.,  21496.,
      21633.,  21770.,  21907.,  22044.,  22181.,  22318.,  22455.,  49608.,
      50001.,  50394.,  50787.,  51180.,  51573.,  51966.,  52359.,  52752.,
      53145.,  53538.,  53931.,  54324.,  54717.,  55110.,  78679.,  79328.,
      79977.,  80626.,  81275.,  81924.,  82573.,  83222.,  83871.,  84520.,
      85169.,  85818.,  86467.,  87116.,  87765.,  107750., 108655., 109560.,
      110465., 111370., 112275., 113180., 114085., 114990., 115895., 116800.,
      117705., 118610., 119515., 120420., 136821., 137982., 139143., 140304.,
      141465., 142626., 143787., 144948., 146109., 147270., 148431., 149592.,
      150753., 151914., 153075., 165892., 167309., 168726., 170143., 171560.,
      172977., 174394., 175811., 177228., 178645., 180062., 181479., 182896.,
      184313., 185730., 194963., 196636., 198309., 199982., 201655., 203328.,
      205001., 206674., 208347., 210020., 211693., 213366., 215039., 216712.,
      218385., 224034., 225963., 227892., 229821., 231750., 233679., 235608.,
      237537., 239466., 241395., 243324., 245253., 247182., 249111., 251040.,
      253105., 255290., 257475., 259660., 261845., 264030., 266215., 268400.,
      270585., 272770., 274955., 277140., 279325., 281510., 283695., 282176.,
      284617., 287058., 289499., 291940., 294381., 296822., 299263., 301704.,
      304145., 306586., 309027., 311468., 313909., 316350., 311247., 313944.,
      316641., 319338., 322035., 324732., 327429., 330126., 332823., 335520.,
      338217., 340914., 343611., 346308., 349005., 340318., 343271., 346224.,
      349177., 352130., 355083., 358036., 360989., 363942., 366895., 369848.,
      372801., 375754., 378707., 381660., 369389., 372598., 375807., 379016.,
      382225., 385434., 388643., 391852., 395061., 398270., 401479., 404688.,
      407897., 411106., 414315., 398460., 401925., 405390., 408855., 412320.,
      415785., 419250., 422715., 426180., 429645., 433110., 436575., 440040.,
      443505., 446970., 427531., 431252., 434973., 438694., 442415., 446136.,
      449857., 453578., 457299., 461020., 464741., 468462., 472183., 475904.,
      479625.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M15xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21897.,  22034.,  22171.,  22308.,  22445.,  22582.,  22719.,  22856.,
      22993.,  23130.,  23267.,  23404.,  23541.,  23678.,  23815.,  23952.,
      52889.,  53282.,  53675.,  54068.,  54461.,  54854.,  55247.,  55640.,
      56033.,  56426.,  56819.,  57212.,  57605.,  57998.,  58391.,  58784.,
      83881.,  84530.,  85179.,  85828.,  86477.,  87126.,  87775.,  88424.,
      89073.,  89722.,  90371.,  91020.,  91669.,  92318.,  92967.,  93616.,
      114873., 115778., 116683., 117588., 118493., 119398., 120303., 121208.,
      122113., 123018., 123923., 124828., 125733., 126638., 127543., 128448.,
      145865., 147026., 148187., 149348., 150509., 151670., 152831., 153992.,
      155153., 156314., 157475., 158636., 159797., 160958., 162119., 163280.,
      176857., 178274., 179691., 181108., 182525., 183942., 185359., 186776.,
      188193., 189610., 191027., 192444., 193861., 195278., 196695., 198112.,
      207849., 209522., 211195., 212868., 214541., 216214., 217887., 219560.,
      221233., 222906., 224579., 226252., 227925., 229598., 231271., 232944.,
      238841., 240770., 242699., 244628., 246557., 248486., 250415., 252344.,
      254273., 256202., 258131., 260060., 261989., 263918., 265847., 267776.,
      269833., 272018., 274203., 276388., 278573., 280758., 282943., 285128.,
      287313., 289498., 291683., 293868., 296053., 298238., 300423., 302608.,
      300825., 303266., 305707., 308148., 310589., 313030., 315471., 317912.,
      320353., 322794., 325235., 327676., 330117., 332558., 334999., 337440.,
      331817., 334514., 337211., 339908., 342605., 345302., 347999., 350696.,
      353393., 356090., 358787., 361484., 364181., 366878., 369575., 372272.,
      362809., 365762., 368715., 371668., 374621., 377574., 380527., 383480.,
      386433., 389386., 392339., 395292., 398245., 401198., 404151., 407104.,
      393801., 397010., 400219., 403428., 406637., 409846., 413055., 416264.,
      419473., 422682., 425891., 429100., 432309., 435518., 438727., 441936.,
      424793., 428258., 431723., 435188., 438653., 442118., 445583., 449048.,
      452513., 455978., 459443., 462908., 466373., 469838., 473303., 476768.,
      455785., 459506., 463227., 466948., 470669., 474390., 478111., 481832.,
      485553., 489274., 492995., 496716., 500437., 504158., 507879., 511600.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M16xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12846.,  12952.,  13058.,  13164.,  13270.,  13376.,  13482.,  13588.,
      13694.,  13800.,  13906.,  14012.,  14118.,  14224.,  30892.,  31194.,
      31496.,  31798.,  32100.,  32402.,  32704.,  33006.,  33308.,  33610.,
      33912.,  34214.,  34516.,  34818.,  48938.,  49436.,  49934.,  50432.,
      50930.,  51428.,  51926.,  52424.,  52922.,  53420.,  53918.,  54416.,
      54914.,  55412.,  66984.,  67678.,  68372.,  69066.,  69760.,  70454.,
      71148.,  71842.,  72536.,  73230.,  73924.,  74618.,  75312.,  76006.,
      85030.,  85920.,  86810.,  87700.,  88590.,  89480.,  90370.,  91260.,
      92150.,  93040.,  93930.,  94820.,  95710.,  96600.,  103076., 104162.,
      105248., 106334., 107420., 108506., 109592., 110678., 111764., 112850.,
      113936., 115022., 116108., 117194., 121122., 122404., 123686., 124968.,
      126250., 127532., 128814., 130096., 131378., 132660., 133942., 135224.,
      136506., 137788., 139168., 140646., 142124., 143602., 145080., 146558.,
      148036., 149514., 150992., 152470., 153948., 155426., 156904., 158382.,
      157214., 158888., 160562., 162236., 163910., 165584., 167258., 168932.,
      170606., 172280., 173954., 175628., 177302., 178976., 175260., 177130.,
      179000., 180870., 182740., 184610., 186480., 188350., 190220., 192090.,
      193960., 195830., 197700., 199570., 193306., 195372., 197438., 199504.,
      201570., 203636., 205702., 207768., 209834., 211900., 213966., 216032.,
      218098., 220164., 211352., 213614., 215876., 218138., 220400., 222662.,
      224924., 227186., 229448., 231710., 233972., 236234., 238496., 240758.,
      229398., 231856., 234314., 236772., 239230., 241688., 244146., 246604.,
      249062., 251520., 253978., 256436., 258894., 261352., 247444., 250098.,
      252752., 255406., 258060., 260714., 263368., 266022., 268676., 271330.,
      273984., 276638., 279292., 281946., 265490., 268340., 271190., 274040.,
      276890., 279740., 282590., 285440., 288290., 291140., 293990., 296840.,
      299690., 302540., 283536., 286582., 289628., 292674., 295720., 298766.,
      301812., 304858., 307904., 310950., 313996., 317042., 320088., 323134.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M16xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13756.,  13862.,  13968.,  14074.,  14180.,  14286.,  14392.,  14498.,
      14604.,  14710.,  14816.,  14922.,  15028.,  15134.,  15240.,  33077.,
      33379.,  33681.,  33983.,  34285.,  34587.,  34889.,  35191.,  35493.,
      35795.,  36097.,  36399.,  36701.,  37003.,  37305.,  52398.,  52896.,
      53394.,  53892.,  54390.,  54888.,  55386.,  55884.,  56382.,  56880.,
      57378.,  57876.,  58374.,  58872.,  59370.,  71719.,  72413.,  73107.,
      73801.,  74495.,  75189.,  75883.,  76577.,  77271.,  77965.,  78659.,
      79353.,  80047.,  80741.,  81435.,  91040.,  91930.,  92820.,  93710.,
      94600.,  95490.,  96380.,  97270.,  98160.,  99050.,  99940.,  100830.,
      101720., 102610., 103500., 110361., 111447., 112533., 113619., 114705.,
      115791., 116877., 117963., 119049., 120135., 121221., 122307., 123393.,
      124479., 125565., 129682., 130964., 132246., 133528., 134810., 136092.,
      137374., 138656., 139938., 141220., 142502., 143784., 145066., 146348.,
      147630., 149003., 150481., 151959., 153437., 154915., 156393., 157871.,
      159349., 160827., 162305., 163783., 165261., 166739., 168217., 169695.,
      168324., 169998., 171672., 173346., 175020., 176694., 178368., 180042.,
      181716., 183390., 185064., 186738., 188412., 190086., 191760., 187645.,
      189515., 191385., 193255., 195125., 196995., 198865., 200735., 202605.,
      204475., 206345., 208215., 210085., 211955., 213825., 206966., 209032.,
      211098., 213164., 215230., 217296., 219362., 221428., 223494., 225560.,
      227626., 229692., 231758., 233824., 235890., 226287., 228549., 230811.,
      233073., 235335., 237597., 239859., 242121., 244383., 246645., 248907.,
      251169., 253431., 255693., 257955., 245608., 248066., 250524., 252982.,
      255440., 257898., 260356., 262814., 265272., 267730., 270188., 272646.,
      275104., 277562., 280020., 264929., 267583., 270237., 272891., 275545.,
      278199., 280853., 283507., 286161., 288815., 291469., 294123., 296777.,
      299431., 302085., 284250., 287100., 289950., 292800., 295650., 298500.,
      301350., 304200., 307050., 309900., 312750., 315600., 318450., 321300.,
      324150., 303571., 306617., 309663., 312709., 315755., 318801., 321847.,
      324893., 327939., 330985., 334031., 337077., 340123., 343169., 346215.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M16xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14666.,  14772.,  14878.,  14984.,  15090.,  15196.,  15302.,  15408.,
      15514.,  15620.,  15726.,  15832.,  15938.,  16044.,  16150.,  16256.,
      35262.,  35564.,  35866.,  36168.,  36470.,  36772.,  37074.,  37376.,
      37678.,  37980.,  38282.,  38584.,  38886.,  39188.,  39490.,  39792.,
      55858.,  56356.,  56854.,  57352.,  57850.,  58348.,  58846.,  59344.,
      59842.,  60340.,  60838.,  61336.,  61834.,  62332.,  62830.,  63328.,
      76454.,  77148.,  77842.,  78536.,  79230.,  79924.,  80618.,  81312.,
      82006.,  82700.,  83394.,  84088.,  84782.,  85476.,  86170.,  86864.,
      97050.,  97940.,  98830.,  99720.,  100610., 101500., 102390., 103280.,
      104170., 105060., 105950., 106840., 107730., 108620., 109510., 110400.,
      117646., 118732., 119818., 120904., 121990., 123076., 124162., 125248.,
      126334., 127420., 128506., 129592., 130678., 131764., 132850., 133936.,
      138242., 139524., 140806., 142088., 143370., 144652., 145934., 147216.,
      148498., 149780., 151062., 152344., 153626., 154908., 156190., 157472.,
      158838., 160316., 161794., 163272., 164750., 166228., 167706., 169184.,
      170662., 172140., 173618., 175096., 176574., 178052., 179530., 181008.,
      179434., 181108., 182782., 184456., 186130., 187804., 189478., 191152.,
      192826., 194500., 196174., 197848., 199522., 201196., 202870., 204544.,
      200030., 201900., 203770., 205640., 207510., 209380., 211250., 213120.,
      214990., 216860., 218730., 220600., 222470., 224340., 226210., 228080.,
      220626., 222692., 224758., 226824., 228890., 230956., 233022., 235088.,
      237154., 239220., 241286., 243352., 245418., 247484., 249550., 251616.,
      241222., 243484., 245746., 248008., 250270., 252532., 254794., 257056.,
      259318., 261580., 263842., 266104., 268366., 270628., 272890., 275152.,
      261818., 264276., 266734., 269192., 271650., 274108., 276566., 279024.,
      281482., 283940., 286398., 288856., 291314., 293772., 296230., 298688.,
      282414., 285068., 287722., 290376., 293030., 295684., 298338., 300992.,
      303646., 306300., 308954., 311608., 314262., 316916., 319570., 322224.,
      303010., 305860., 308710., 311560., 314410., 317260., 320110., 322960.,
      325810., 328660., 331510., 334360., 337210., 340060., 342910., 345760.,
      323606., 326652., 329698., 332744., 335790., 338836., 341882., 344928.,
      347974., 351020., 354066., 357112., 360158., 363204., 366250., 369296.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M16xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15801.,  15922.,  16043.,  16164.,  16285.,  16406.,  16527.,  16648.,
      16769.,  16890.,  17011.,  17132.,  17253.,  17374.,  38090.,  38436.,
      38782.,  39128.,  39474.,  39820.,  40166.,  40512.,  40858.,  41204.,
      41550.,  41896.,  42242.,  42588.,  60379.,  60950.,  61521.,  62092.,
      62663.,  63234.,  63805.,  64376.,  64947.,  65518.,  66089.,  66660.,
      67231.,  67802.,  82668.,  83464.,  84260.,  85056.,  85852.,  86648.,
      87444.,  88240.,  89036.,  89832.,  90628.,  91424.,  92220.,  93016.,
      104957., 105978., 106999., 108020., 109041., 110062., 111083., 112104.,
      113125., 114146., 115167., 116188., 117209., 118230., 127246., 128492.,
      129738., 130984., 132230., 133476., 134722., 135968., 137214., 138460.,
      139706., 140952., 142198., 143444., 149535., 151006., 152477., 153948.,
      155419., 156890., 158361., 159832., 161303., 162774., 164245., 165716.,
      167187., 168658., 171824., 173520., 175216., 176912., 178608., 180304.,
      182000., 183696., 185392., 187088., 188784., 190480., 192176., 193872.,
      194113., 196034., 197955., 199876., 201797., 203718., 205639., 207560.,
      209481., 211402., 213323., 215244., 217165., 219086., 216402., 218548.,
      220694., 222840., 224986., 227132., 229278., 231424., 233570., 235716.,
      237862., 240008., 242154., 244300., 238691., 241062., 243433., 245804.,
      248175., 250546., 252917., 255288., 257659., 260030., 262401., 264772.,
      267143., 269514., 260980., 263576., 266172., 268768., 271364., 273960.,
      276556., 279152., 281748., 284344., 286940., 289536., 292132., 294728.,
      283269., 286090., 288911., 291732., 294553., 297374., 300195., 303016.,
      305837., 308658., 311479., 314300., 317121., 319942., 305558., 308604.,
      311650., 314696., 317742., 320788., 323834., 326880., 329926., 332972.,
      336018., 339064., 342110., 345156., 327847., 331118., 334389., 337660.,
      340931., 344202., 347473., 350744., 354015., 357286., 360557., 363828.,
      367099., 370370., 350136., 353632., 357128., 360624., 364120., 367616.,
      371112., 374608., 378104., 381600., 385096., 388592., 392088., 395584.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M16xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16921.,  17042.,  17163.,  17284.,  17405.,  17526.,  17647.,  17768.,
      17889.,  18010.,  18131.,  18252.,  18373.,  18494.,  18615.,  40786.,
      41132.,  41478.,  41824.,  42170.,  42516.,  42862.,  43208.,  43554.,
      43900.,  44246.,  44592.,  44938.,  45284.,  45630.,  64651.,  65222.,
      65793.,  66364.,  66935.,  67506.,  68077.,  68648.,  69219.,  69790.,
      70361.,  70932.,  71503.,  72074.,  72645.,  88516.,  89312.,  90108.,
      90904.,  91700.,  92496.,  93292.,  94088.,  94884.,  95680.,  96476.,
      97272.,  98068.,  98864.,  99660.,  112381., 113402., 114423., 115444.,
      116465., 117486., 118507., 119528., 120549., 121570., 122591., 123612.,
      124633., 125654., 126675., 136246., 137492., 138738., 139984., 141230.,
      142476., 143722., 144968., 146214., 147460., 148706., 149952., 151198.,
      152444., 153690., 160111., 161582., 163053., 164524., 165995., 167466.,
      168937., 170408., 171879., 173350., 174821., 176292., 177763., 179234.,
      180705., 183976., 185672., 187368., 189064., 190760., 192456., 194152.,
      195848., 197544., 199240., 200936., 202632., 204328., 206024., 207720.,
      207841., 209762., 211683., 213604., 215525., 217446., 219367., 221288.,
      223209., 225130., 227051., 228972., 230893., 232814., 234735., 231706.,
      233852., 235998., 238144., 240290., 242436., 244582., 246728., 248874.,
      251020., 253166., 255312., 257458., 259604., 261750., 255571., 257942.,
      260313., 262684., 265055., 267426., 269797., 272168., 274539., 276910.,
      279281., 281652., 284023., 286394., 288765., 279436., 282032., 284628.,
      287224., 289820., 292416., 295012., 297608., 300204., 302800., 305396.,
      307992., 310588., 313184., 315780., 303301., 306122., 308943., 311764.,
      314585., 317406., 320227., 323048., 325869., 328690., 331511., 334332.,
      337153., 339974., 342795., 327166., 330212., 333258., 336304., 339350.,
      342396., 345442., 348488., 351534., 354580., 357626., 360672., 363718.,
      366764., 369810., 351031., 354302., 357573., 360844., 364115., 367386.,
      370657., 373928., 377199., 380470., 383741., 387012., 390283., 393554.,
      396825., 374896., 378392., 381888., 385384., 388880., 392376., 395872.,
      399368., 402864., 406360., 409856., 413352., 416848., 420344., 423840.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M16xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18041.,  18162.,  18283.,  18404.,  18525.,  18646.,  18767.,  18888.,
      19009.,  19130.,  19251.,  19372.,  19493.,  19614.,  19735.,  19856.,
      43482.,  43828.,  44174.,  44520.,  44866.,  45212.,  45558.,  45904.,
      46250.,  46596.,  46942.,  47288.,  47634.,  47980.,  48326.,  48672.,
      68923.,  69494.,  70065.,  70636.,  71207.,  71778.,  72349.,  72920.,
      73491.,  74062.,  74633.,  75204.,  75775.,  76346.,  76917.,  77488.,
      94364.,  95160.,  95956.,  96752.,  97548.,  98344.,  99140.,  99936.,
      100732., 101528., 102324., 103120., 103916., 104712., 105508., 106304.,
      119805., 120826., 121847., 122868., 123889., 124910., 125931., 126952.,
      127973., 128994., 130015., 131036., 132057., 133078., 134099., 135120.,
      145246., 146492., 147738., 148984., 150230., 151476., 152722., 153968.,
      155214., 156460., 157706., 158952., 160198., 161444., 162690., 163936.,
      170687., 172158., 173629., 175100., 176571., 178042., 179513., 180984.,
      182455., 183926., 185397., 186868., 188339., 189810., 191281., 192752.,
      196128., 197824., 199520., 201216., 202912., 204608., 206304., 208000.,
      209696., 211392., 213088., 214784., 216480., 218176., 219872., 221568.,
      221569., 223490., 225411., 227332., 229253., 231174., 233095., 235016.,
      236937., 238858., 240779., 242700., 244621., 246542., 248463., 250384.,
      247010., 249156., 251302., 253448., 255594., 257740., 259886., 262032.,
      264178., 266324., 268470., 270616., 272762., 274908., 277054., 279200.,
      272451., 274822., 277193., 279564., 281935., 284306., 286677., 289048.,
      291419., 293790., 296161., 298532., 300903., 303274., 305645., 308016.,
      297892., 300488., 303084., 305680., 308276., 310872., 313468., 316064.,
      318660., 321256., 323852., 326448., 329044., 331640., 334236., 336832.,
      323333., 326154., 328975., 331796., 334617., 337438., 340259., 343080.,
      345901., 348722., 351543., 354364., 357185., 360006., 362827., 365648.,
      348774., 351820., 354866., 357912., 360958., 364004., 367050., 370096.,
      373142., 376188., 379234., 382280., 385326., 388372., 391418., 394464.,
      374215., 377486., 380757., 384028., 387299., 390570., 393841., 397112.,
      400383., 403654., 406925., 410196., 413467., 416738., 420009., 423280.,
      399656., 403152., 406648., 410144., 413640., 417136., 420632., 424128.,
      427624., 431120., 434616., 438112., 441608., 445104., 448600., 452096.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M16xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19177.,  19314.,  19451.,  19588.,  19725.,  19862.,  19999.,  20136.,
      20273.,  20410.,  20547.,  20684.,  20821.,  20958.,  46327.,  46720.,
      47113.,  47506.,  47899.,  48292.,  48685.,  49078.,  49471.,  49864.,
      50257.,  50650.,  51043.,  51436.,  73477.,  74126.,  74775.,  75424.,
      76073.,  76722.,  77371.,  78020.,  78669.,  79318.,  79967.,  80616.,
      81265.,  81914.,  100627., 101532., 102437., 103342., 104247., 105152.,
      106057., 106962., 107867., 108772., 109677., 110582., 111487., 112392.,
      127777., 128938., 130099., 131260., 132421., 133582., 134743., 135904.,
      137065., 138226., 139387., 140548., 141709., 142870., 154927., 156344.,
      157761., 159178., 160595., 162012., 163429., 164846., 166263., 167680.,
      169097., 170514., 171931., 173348., 182077., 183750., 185423., 187096.,
      188769., 190442., 192115., 193788., 195461., 197134., 198807., 200480.,
      202153., 203826., 209227., 211156., 213085., 215014., 216943., 218872.,
      220801., 222730., 224659., 226588., 228517., 230446., 232375., 234304.,
      236377., 238562., 240747., 242932., 245117., 247302., 249487., 251672.,
      253857., 256042., 258227., 260412., 262597., 264782., 263527., 265968.,
      268409., 270850., 273291., 275732., 278173., 280614., 283055., 285496.,
      287937., 290378., 292819., 295260., 290677., 293374., 296071., 298768.,
      301465., 304162., 306859., 309556., 312253., 314950., 317647., 320344.,
      323041., 325738., 317827., 320780., 323733., 326686., 329639., 332592.,
      335545., 338498., 341451., 344404., 347357., 350310., 353263., 356216.,
      344977., 348186., 351395., 354604., 357813., 361022., 364231., 367440.,
      370649., 373858., 377067., 380276., 383485., 386694., 372127., 375592.,
      379057., 382522., 385987., 389452., 392917., 396382., 399847., 403312.,
      406777., 410242., 413707., 417172., 399277., 402998., 406719., 410440.,
      414161., 417882., 421603., 425324., 429045., 432766., 436487., 440208.,
      443929., 447650., 426427., 430404., 434381., 438358., 442335., 446312.,
      450289., 454266., 458243., 462220., 466197., 470174., 474151., 478128.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M16xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20537.,  20674.,  20811.,  20948.,  21085.,  21222.,  21359.,  21496.,
      21633.,  21770.,  21907.,  22044.,  22181.,  22318.,  22455.,  49608.,
      50001.,  50394.,  50787.,  51180.,  51573.,  51966.,  52359.,  52752.,
      53145.,  53538.,  53931.,  54324.,  54717.,  55110.,  78679.,  79328.,
      79977.,  80626.,  81275.,  81924.,  82573.,  83222.,  83871.,  84520.,
      85169.,  85818.,  86467.,  87116.,  87765.,  107750., 108655., 109560.,
      110465., 111370., 112275., 113180., 114085., 114990., 115895., 116800.,
      117705., 118610., 119515., 120420., 136821., 137982., 139143., 140304.,
      141465., 142626., 143787., 144948., 146109., 147270., 148431., 149592.,
      150753., 151914., 153075., 165892., 167309., 168726., 170143., 171560.,
      172977., 174394., 175811., 177228., 178645., 180062., 181479., 182896.,
      184313., 185730., 194963., 196636., 198309., 199982., 201655., 203328.,
      205001., 206674., 208347., 210020., 211693., 213366., 215039., 216712.,
      218385., 224034., 225963., 227892., 229821., 231750., 233679., 235608.,
      237537., 239466., 241395., 243324., 245253., 247182., 249111., 251040.,
      253105., 255290., 257475., 259660., 261845., 264030., 266215., 268400.,
      270585., 272770., 274955., 277140., 279325., 281510., 283695., 282176.,
      284617., 287058., 289499., 291940., 294381., 296822., 299263., 301704.,
      304145., 306586., 309027., 311468., 313909., 316350., 311247., 313944.,
      316641., 319338., 322035., 324732., 327429., 330126., 332823., 335520.,
      338217., 340914., 343611., 346308., 349005., 340318., 343271., 346224.,
      349177., 352130., 355083., 358036., 360989., 363942., 366895., 369848.,
      372801., 375754., 378707., 381660., 369389., 372598., 375807., 379016.,
      382225., 385434., 388643., 391852., 395061., 398270., 401479., 404688.,
      407897., 411106., 414315., 398460., 401925., 405390., 408855., 412320.,
      415785., 419250., 422715., 426180., 429645., 433110., 436575., 440040.,
      443505., 446970., 427531., 431252., 434973., 438694., 442415., 446136.,
      449857., 453578., 457299., 461020., 464741., 468462., 472183., 475904.,
      479625., 456602., 460579., 464556., 468533., 472510., 476487., 480464.,
      484441., 488418., 492395., 496372., 500349., 504326., 508303., 512280.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseFalse, M16xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21897.,  22034.,  22171.,  22308.,  22445.,  22582.,  22719.,  22856.,
      22993.,  23130.,  23267.,  23404.,  23541.,  23678.,  23815.,  23952.,
      52889.,  53282.,  53675.,  54068.,  54461.,  54854.,  55247.,  55640.,
      56033.,  56426.,  56819.,  57212.,  57605.,  57998.,  58391.,  58784.,
      83881.,  84530.,  85179.,  85828.,  86477.,  87126.,  87775.,  88424.,
      89073.,  89722.,  90371.,  91020.,  91669.,  92318.,  92967.,  93616.,
      114873., 115778., 116683., 117588., 118493., 119398., 120303., 121208.,
      122113., 123018., 123923., 124828., 125733., 126638., 127543., 128448.,
      145865., 147026., 148187., 149348., 150509., 151670., 152831., 153992.,
      155153., 156314., 157475., 158636., 159797., 160958., 162119., 163280.,
      176857., 178274., 179691., 181108., 182525., 183942., 185359., 186776.,
      188193., 189610., 191027., 192444., 193861., 195278., 196695., 198112.,
      207849., 209522., 211195., 212868., 214541., 216214., 217887., 219560.,
      221233., 222906., 224579., 226252., 227925., 229598., 231271., 232944.,
      238841., 240770., 242699., 244628., 246557., 248486., 250415., 252344.,
      254273., 256202., 258131., 260060., 261989., 263918., 265847., 267776.,
      269833., 272018., 274203., 276388., 278573., 280758., 282943., 285128.,
      287313., 289498., 291683., 293868., 296053., 298238., 300423., 302608.,
      300825., 303266., 305707., 308148., 310589., 313030., 315471., 317912.,
      320353., 322794., 325235., 327676., 330117., 332558., 334999., 337440.,
      331817., 334514., 337211., 339908., 342605., 345302., 347999., 350696.,
      353393., 356090., 358787., 361484., 364181., 366878., 369575., 372272.,
      362809., 365762., 368715., 371668., 374621., 377574., 380527., 383480.,
      386433., 389386., 392339., 395292., 398245., 401198., 404151., 407104.,
      393801., 397010., 400219., 403428., 406637., 409846., 413055., 416264.,
      419473., 422682., 425891., 429100., 432309., 435518., 438727., 441936.,
      424793., 428258., 431723., 435188., 438653., 442118., 445583., 449048.,
      452513., 455978., 459443., 462908., 466373., 469838., 473303., 476768.,
      455785., 459506., 463227., 466948., 470669., 474390., 478111., 481832.,
      485553., 489274., 492995., 496716., 500437., 504158., 507879., 511600.,
      486777., 490754., 494731., 498708., 502685., 506662., 510639., 514616.,
      518593., 522570., 526547., 530524., 534501., 538478., 542455., 546432.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}